package com.lboyang.common.dto;

import lombok.*;

/**
 * @Description
 *      自定义的 RPC 数据包格式
 *
 *    0     1     2     3     4        5     6     7     8         9          10      11     12  13  14   15 16
 *    +-----+-----+-----+-----+--------+----+----+----+------+-----------+-------+----- --+-----+-----+-------+
 *    |   magic   code        |version | full length         | messageType| codec|compress|    RequestId       |
 *    +-----------------------+--------+---------------------+-----------+-----------+-----------+------------+
 *    |                                                                                                       |
 *    |                                         body                                                          |
 *    |                                                                                                       |
 *    |                                        ... ...                                                        |
 *    +-------------------------------------------------------------------------------------------------------+
 *  4B  magic code（魔法数）   1B version（版本）   4B full length（消息长度）    1B messageType（消息类型）
 *  1B compress（压缩类型） 1B codec（序列化类型）    4B  requestId（请求的Id）
 *  body（object类型数据）
 *
 * @Date 2021/9/12 11:59
 * @author: A.iguodala
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@ToString
public class NrpcMessage {

    /**
     * 消息类型
     */
    private byte messageType;

    /**
     * 编码方式
     */
    private byte codec;

    /**
     * 压缩方式
     */
    private byte compress;

    /**
     * 请求 ID
     */
    private int requestId;

    /**
     * 实体数据
     */
    private Object data;
}
